<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<title></title>
</head>
<style type="text/css">

</style>

<body>

	<script type="text/javascript">
		//数据结构Map使用方法-Map 是 ES6 中新增的数据结构，Map 类似于对象，但普通对象的 key 必须是字符串或者数字，而 Map 的 key 可以是任何数据类型  
		//普通对象 {}  普通对象的 key 必须是字符串或者数字
		// let json={{a:1}:'ok'}
		// console.log('普通对象',json);

		// Map 对象的 key 可以是任何数据类型  
		// const map = new Map()
		// console.log(17, map)
		// const obj = { a: 1 };
		// map.set(obj, 'OK') //给对象填加值
		// console.log(20, map); //{{a: 1}=>OK}
		// console.log(21, map.get(obj));// "OK" 获取对象的值
		// console.log(map.has(obj)) // true

		// 应用-给数组中对象去重,去除数组中对象id重复的
		/* 	let arrObj = [
				{ name: "小红", id: 1 },
				{ name: "小绿", id: 1 },
				{ name: "小黄", id: 4 },
				{ name: "小绿", id: 3 },
				{ name: "小紫", id: 1 },
				{ name: "小蓝", id: 4 }
			];
	
			let map1 = new Map();
			arrObj.forEach(item => {
				if (!map1.has(item.id)) {
					map1.set(item.id, item)
				}
			})
			console.log(46, map1); //对象 {1 => {…}, 4 => {…}, 3 => {…}}
			//    console.log(map1.keys(),map1.values());  //利用es6中获取对象的键，值方法，可以提取出对象
			let arr = [...map1.values()]; //要展开下，获取对象里值转成数组。如果不展开map1.values返回的是遍历器
			console.log(49, arr); */

		//2.数据结构Set用法-Set里要的是数组，常用于数组去重

		// ES6 提供了新的数据结构 Set。它类似于数组，但是成员的值都是唯一的，没有重复的值。 Set本身是一个构造函数，用来生成Set数据结构

		const set = new Set([1, 2, 3, 3, 6, 7, 2, 9]);
		set.add(10)  //添加  返回Set结构本身
		set.delete(10)  //删除  返回布尔值表示是否成功
		console.log(set.has(10))  //返回布尔值表示是否是Set成员
		// set.clear() //清除所有成员，没有返回值。
		console.log(66, set);

		//set其它方法
		// set.keys() //返回键名的遍历器。  
		console.log(63, set.values(), [...set.values()])//返回键值的遍历器。展开后才能变成真正的数组
		// set.entries() //返回所有成员的遍历器。



		// 应用：数组去重
		let arr1 = [1, 2, 1, 2];
		let set1 = new Set(arr1)
		console.log('对象', set1);
		console.log([...set1]); //[1,2]  


	</script>

</body>

</html>